package com.suanfa.sort.ti;

import com.suanfa.util.ArrayUtils;

/**
 * @author jukg
 * @date 2025/01/06 10:45
 * @description
 * 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2，另有两个整数 m 和 n ，分别表示 nums1 和 nums2 中的元素数目。
 * 请你 合并 nums2 到 nums1 中，使合并后的数组同样按 非递减顺序 排列。
 */
public class CollectMerge {

    public static void main(String[] args) {
        /*int[] nums1 = {1,2,3,0,0,0};
        int m = 3;
        int[]nums2 = {2,5,6};
        int n = 3;
        merge(nums1, m, nums2, n);*/
        int[] nums1 = {1};
        int m = 1;
        int[]nums2 = {};
        int n = 0;
        merge(nums1, m, nums2, n);
       ArrayUtils.printArray(nums1);
    }

    public static void merge(int[] nums1, int m, int[] nums2, int n) {

      int p1 = m -1;
      int p2 = n -1;
      int index = m + n -1;
      while(p1 !=-1 || p2 != -1){

          int cur = 0;
          if(p1 == -1){
              cur = nums2[p2--];
          }else if(p2 == -1){
              cur = nums1[p1--];
          } else if(nums1[p1] > nums2[p2]){
              cur = nums1[p1--];
          }else{
              cur = nums2[p2--];
          }
          nums1[index--] = cur;
      }

    }


}
